/**
 * 简单数据类型名称字符串常量对象
 */
export const SimpleTypeConst = {
  INT: 'int',
  FLOAT: 'float',
  BOOL: 'bool',
  STRING: 'string',
} as const

/**
 * 简单数据类型
 */
export type SimpleType = typeof SimpleTypeConst[keyof typeof SimpleTypeConst]

/**
 * 将指定数据转换为目标数据类型
 *
 * @param data 原始数据
 * @param {SimpleType} targetType 目标数据类型
 * @returns {T} 转换后的数据
 */
export const simpleTypeConvert = <T>(data: any, targetType: SimpleType = SimpleTypeConst.STRING): T => {
  switch (targetType) {
    case SimpleTypeConst.INT:
      return parseInt(data) as T
    case SimpleTypeConst.FLOAT:
      return parseFloat(data) as T
    case SimpleTypeConst.BOOL:
      return Boolean(data) as T
    case SimpleTypeConst.STRING:
      return String(data) as T
    default:
      return data as T
  }
}
